In order to execute computer software written in a high level language, there are two generally accepted means. The source code may be first compiled by using a compiler into the object code (machine executable instructions), which can then be executed on a specific hardware (or simulated hardware) platform. Examples of computer languages that typically involve compilation are C or C++. Alternatively, the source code may be read by an interpreter, one line at a time, which directly causes the underlying hardware platform to carry out the instructions. LISP is one example of an interpreted computer language.
Some other computer program languages may be subject to a hybrid approach—interpreting some of the code entities and compiling some of the code entities. For example, Java™ Programs are commonly executed within a Java Virtual Machine (JVM). Java is a trademark of Sun Microsystems, Inc. in the United States, other countries, or both. A Java Virtual Machine executes the program code (bytecode) dynamically and typically incorporates both an interpreter and an optimizing Just-In-Time (JIT) compiler. A Java Virtual Machine may start processing the program code by interpreting the instructions but then compile some parts of the application code during runtime.